<HTML>
<HEAD>
<!-- This HTML file has been created by texi2html 1.29
     from clp.tnf on 19 December 2010 -->

<TITLE>Command Line Processing - Specifying the command line interface</TITLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000" BACKGROUND="gifs/bg.gif">
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0" VALIGN=BOTTOM>
<TR VALIGN=BOTTOM>
<TD WIDTH="160" VALIGN=BOTTOM>
<A HREF="http://eli-project.sourceforge.net/">
<IMG SRC="gifs/elilogo.gif" BORDER=0>
</A>&nbsp;
</TD>
<TD WIDTH="25" VALIGN=BOTTOM>
<img src="gifs/empty.gif" WIDTH=25 HEIGHT=25>
</TD>
<TD ALIGN=LEFT WIDTH="475" VALIGN=BOTTOM>
<A HREF="index.html"><IMG SRC="gifs/title.png" BORDER=0></A>
</TD>
<!-- |DELETE FOR SOURCEFORGE LOGO|
<TD>
<a href="http://sourceforge.net/projects/eli-project">
<img
  src="http://sflogo.sourceforge.net/sflogo.php?group_id=70447&amp;type=13"
  width="120" height="30"
  alt="Get Eli: Translator Construction Made Easy at SourceForge.net.
    Fast, secure and Free Open Source software downloads"/>
</a>
</TD>
|DELETE FOR SOURCEFORGE LOGO| -->
</TR>
</TABLE>

<HR size=1 noshade width=785 align=left>
<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=0>
<TR>
<TD VALIGN=TOP WIDTH="160">
<h4>General Information</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="index.html">Eli: Translator Construction Made Easy</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gindex_1.html#SEC1">Global Index</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="faq_toc.html" >Frequently Asked Questions</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Tutorials</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="EliRefCard_toc.html">Quick Reference Card</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="novice_toc.html">Guide For new Eli Users</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="news_toc.html">Release Notes of Eli</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="nametutorial_toc.html">Tutorial on Name Analysis</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="typetutorial_toc.html">Tutorial on Type Analysis</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Reference Manuals</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ui_toc.html">User Interface</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="pp_toc.html">Eli products and parameters</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lidoref_toc.html">LIDO Reference Manual</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Libraries</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lib_toc.html">Eli library routines</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="modlib_toc.html">Specification Module Library</a></td></tr>
</table>

<h4>Translation Tasks</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lex_toc.html">Lexical analysis specification</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="syntax_toc.html">Syntactic Analysis Manual</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="comptrees_toc.html">Computation in Trees</a></td></tr>
</table>

<h4>Tools</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lcl_toc.html">LIGA Control Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="show_toc.html">Debugging Information for LIDO</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gorto_toc.html">Graphical ORder TOol</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="fw_toc.html">FunnelWeb User's Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ptg_toc.html">Pattern-based Text Generator</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="deftbl_toc.html">Property Definition Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="oil_toc.html">Operator Identification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="tp_toc.html">Tree Grammar Specification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="clp_toc.html">Command Line Processing</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="cola_toc.html">COLA Options Reference Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="idem_toc.html">Generating Unparsing Code</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="mon_toc.html">Monitoring a Processor's Execution</a> </td></tr>
</table>

<h4>Administration</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="sysadmin_toc.html">System Administration Guide</a> </td></tr>
</table>

<HR WIDTH="100%">
<A HREF="mailto:eli-project-users@lists.sourceforge.net">
<IMG SRC="gifs/button_mail.gif" BORDER=0 ALIGN="left"></A>
<A HREF="index.html"><IMG SRC="gifs/home.gif" BORDER=0 ALIGN="right"></A>

</TD>
<TD VALIGN=TOP WIDTH="25"><img src="gifs/empty.gif" WIDTH=25 HEIGHT=25></TD>

<TD VALIGN=TOP WIDTH="600">
<H1>Command Line Processing</H1>
<P>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="clp_2.html"><IMG SRC="gifs/prev.gif" ALT="Previous Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="clp_4.html"><IMG SRC="gifs/next.gif" ALT="Next Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="clp_toc.html"><IMG SRC="gifs/up.gif" ALT="Table of Contents" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT="">
<HR size=1 noshade width=600 align=left>
<H1><A NAME="SEC3" HREF="clp_toc.html#SEC3">Specifying the command line interface</A></H1>
<P>
If the default behaviour is not sufficient you can alter the command
line interface using a file whose extension is <CODE>.clp</CODE>.
<A NAME="IDX8"></A>
The following sections show how to specify the varieties of options that
the interface may need to handle.
<P>
<H2><A NAME="SEC4" HREF="clp_toc.html#SEC4">The general format of the command line</A></H2>
<P>
The general format 
<A NAME="IDX10"></A>
<A NAME="IDX9"></A>
of a command line that can be recognised using a <CODE>.clp</CODE>
<A NAME="IDX11"></A>
specification is:
<P>
<OL>
<LI>
The program name, followed by
<LI>
An arbitrary number of options, followed by
<LI>
An arbitrary number of positional parameters.
</OL>
<P>
A <CODE>.clp</CODE> specification describes the legal options and positional
parameters.
<P>
If the <CODE>.clp</CODE> specification is empty the effect is to prohibit all
options and positional parameters.  A processor generated in this manner
will get its input from standard input.
<A NAME="IDX13"></A>
<A NAME="IDX12"></A>
<P>
<H2><A NAME="SEC5" HREF="clp_toc.html#SEC5">Options that are either there or not</A></H2>
<A NAME="IDX14"></A>
<P>
A boolean option is something like the <CODE>-S</CODE> (produce assembly code)
or <CODE>-c</CODE> (compile only, don't link) options for the standard Unix
compilers.  That is, the option string is all that is needed.
<P>
A specification line of the form:
<P>
<PRE>
<VAR>name</VAR> <VAR>string</VAR> <SAMP>`boolean'</SAMP> <SAMP>`;'</SAMP>
</PRE>
describes a boolean option called <VAR>name</VAR> which is indicated by the
command line string <VAR>string</VAR>.  For example:
<A NAME="IDX15"></A>
<P>
<PRE>
GenAssembly "-S" boolean;
CompileOnly "-c" boolean;
</PRE>
describe the compiler options mentioned above.
<P>
If a boolean option can appear more than once on the command line you
<A NAME="IDX16"></A>
should use the keyword <CODE>booleans</CODE> instead of <CODE>boolean</CODE>.
Thus, the specification line:
<A NAME="IDX17"></A>
<P>
<PRE>
WideListing "-w" booleans;
</PRE>
says that the user can give as many <CODE>-w</CODE> options as they like.  For
example, the processor can check the number provided and produce a
listing of the appropriate width.  (See the Berkeley Unix <CODE>ps</CODE>
command.)
<P>
<H2><A NAME="SEC6" HREF="clp_toc.html#SEC6">Options that have a value given with them</A></H2>
<A NAME="IDX18"></A>
<P>
Some options need values.  CLP supports two types of values: strings
<A NAME="IDX19"></A>
and integers.
<A NAME="IDX20"></A>
Typical options of these types would be the <CODE>-o</CODE> (generate output
in the specified file) option of a Unix compiler, or the <CODE>-#</CODE>
(print this many copies) option of a line printing program.
<P>
A specification line of the form:
<P>
<PRE>
<VAR>name</VAR> <VAR>string</VAR> <VAR>type</VAR> <SAMP>`;'</SAMP>
</PRE>
describes a value option called <VAR>name</VAR> which is indicated by the
command line string <VAR>string</VAR> and accepts values of the specified
type separated from the indication by whitespace.
<A NAME="IDX21"></A>
The valid types are <CODE>int</CODE>,
<A NAME="IDX22"></A>
<CODE>ints</CODE>,
<A NAME="IDX23"></A>
<CODE>string</CODE>
<A NAME="IDX24"></A>
and <CODE>strings</CODE>.
<A NAME="IDX25"></A>
The plural versions denote value options that may
<A NAME="IDX26"></A>
appear more than once on the command line.
<P>
For example:
<P>
<PRE>
OutputFile "-o" string;
NumCopies "-#" int;
</PRE>
describes the options mentioned above and
<P>
<PRE>
Command "-e" strings;
</PRE>
describes a repeatable option (see the Unix command <CODE>sed</CODE>, for
example).
<P>
<H2><A NAME="SEC7" HREF="clp_toc.html#SEC7">Options that are joined to their values</A></H2>
<P>
Value options as described in the previous section are separated from
their values by white space.  If this is not desired, <VAR>joined</VAR> value
options
<A NAME="IDX27"></A>
can be used and no white space will be expected.  Examples of joined
value options are <CODE>-</CODE> which is used by the Unix <CODE>head</CODE>
program to designate how many lines to print (eg. <CODE>head -42 file</CODE>),
and <CODE>-temp=</CODE> which is used by some compilers to describe where to
put temporary files (eg. <CODE>pc -temp=/usr/tmp file.p</CODE>).
<P>
To describe a joined value option, use the specification line as
described in the previous section with the keyword <CODE>joinedto</CODE>
<A NAME="IDX28"></A>
before the type specifier.
<P>
For example, the following specification lines describe the options
mentioned above:
<P>
<PRE>
TmpFile "-temp=" joinedto string;
NumLines "-" joinedto int;
</PRE>
<P>
Joined value options can be repeated in the same way as normal value
<A NAME="IDX29"></A>
options.  For example,
<P>
<PRE>
MacroPackage "-m" joinedto strings;
</PRE>
<P>
In some cases it is desirable to allow the option to be joined to its
value or to be separated from its value by whitespace.  To specify this
behaviour the keyword <CODE>with</CODE> can be used before the type specifier.
<A NAME="IDX30"></A>
<CODE>with</CODE> can also be used with repeated options of both integer and
string type.
<P>
For example, the following specification line describes an option
<CODE>-x</CODE> for which both of the following uses would be legal:
<P>
<PRE>
-x42 -x 42
</PRE>
<P>
<PRE>
Exit "-x" with int;
</PRE>
<P>
<H2><A NAME="SEC8" HREF="clp_toc.html#SEC8">Multiple option strings for the same option</A></H2>
<P>
The previous three sections have described options with associated
values.  In some cases it is useful to be able to invoke these options
with more than one string on the command line.  To specify this kind of
behaviour just list all of the option strings instead of just one.
<A NAME="IDX31"></A>
<P>
For example, the following specification line says that the printing
option can be invoked with any of the following: <CODE>-p</CODE>, <CODE>+pr</CODE>,
or <CODE>--print</CODE>.
<P>
<PRE>
Print "-p" "+pr" "--print" boolean "Print the output";
</PRE>
<P>
<H2><A NAME="SEC9" HREF="clp_toc.html#SEC9">The order of option specification lines</A></H2>
<A NAME="IDX32"></A>
<P>
Care must be taken when writing a CLP specification to ensure that the
specification lines are ordered correctly.  When processing the command
line, CLP looks for options in the order that you specify them.  A
problem can occur if some option indication is a prefix of another
<A NAME="IDX33"></A>
option indication specified later.
<P>
For example, the code generated from the specification:
<P>
<PRE>
ModuleOption "-m" joinedto string;
ManOption "-man" string;
</PRE>
will never recognize the <CODE>-man</CODE> option because <CODE>ModuleOption</CODE>
will be tested for first.  Putting the specification of <CODE>ManOption</CODE>
first will fix the problem.
<P>
<H2><A NAME="SEC10" HREF="clp_toc.html#SEC10">Options that affect usage messages</A></H2>
<A NAME="IDX34"></A>
<P>
CLP will automatically arrange for the usage message to be displayed
when an erroneous condition is discovered.  Sometimes it is nice to be
able to implement an option that the user can use on purpose to get the
usage message.
<P>
A specification line of the form:
<P>
<PRE>
<SAMP>`usage'</SAMP> <VAR>string</VAR> <SAMP>`;'</SAMP>
</PRE>
declares <VAR>string</VAR> to be such an option.  Multiple usage options are
allowed. 
<P>
If a usage option is specified by the user when running the generated
processor, the usage message is displayed and execution is terminated.
All other options and/or parameters are ignored.
<P>
When a positional parameter denotes an input file an error message will
be generated in the case that this file cannot be opened.  The default
message is of the form:
<P>
<PRE>
<VAR>PROG</VAR> <SAMP>` : cannot open'</SAMP> <VAR>FILE</VAR> <SAMP>` for reading'</SAMP>
</PRE>
where <VAR>PROG</VAR> is the name of the executable, and <VAR>FILE</VAR> is the
name of the file that could not be opened.
<A NAME="IDX35"></A>
<A NAME="IDX36"></A>
<P>
This error message can be customised using a specification of the form:
<P>
<PRE>
<SAMP>`open'</SAMP> <SAMP>`error'</SAMP> <SAMP>`format'</SAMP> <VAR>string</VAR> <SAMP>`;'</SAMP>
</PRE>
<VAR>String</VAR> will then be used as the error message if a file cannot be
opened.  <VAR>String</VAR> can contain escape sequences of the form <SAMP>`%C'</SAMP>
which are replaced before the message is output.  The following table
gives the valid escape sequences:
<P>
<DL COMPACT>
<DT><SAMP>`%f'</SAMP>
<DD>Replaced by the name of the file that could not be opened.
<DT><SAMP>`%p'</SAMP>
<DD>Replaced by the name of the program.
<DT><SAMP>`%%'</SAMP>
<DD>Replaced by a single <SAMP>`%'</SAMP>.
<DT><SAMP>`%C'</SAMP>
<DD>Where C is not <SAMP>`f'</SAMP>, <SAMP>`p'</SAMP>, or <SAMP>`%'</SAMP>, replaced by nothing.
</DL>
<P>
For example, the default error message is specified using:
<P>
<PRE>
open error format "%p: cannot open %f for reading";
</PRE>
<A NAME="IDX37"></A>
<P>
Sometimes it is useful to print the usage message when a file cannot be
opened.  For example, cases like this occur when the user mistypes an
option which is then interpreted as a filename.  By default, the usage
message is not printed when a file cannot be opened.  To cause it to be
printed, use a specification line of the form:
<P>
<PRE>
<SAMP>`open'</SAMP> <SAMP>`error'</SAMP> <SAMP>`usage'</SAMP> <SAMP>`;'</SAMP>
</PRE>
<P>
<H2><A NAME="SEC11" HREF="clp_toc.html#SEC11">Terminating the option list</A></H2>
<A NAME="IDX38"></A>
<A NAME="IDX39"></A>
<P>
For many processors it is useful to allow the user some way of saying
that a command line string that looks like an option isn't really one.
For example, this situation may arise when using the Unix <CODE>rm</CODE>
command.  If a user wants to remove a file called <CODE>-r</CODE> they would
rather not have the filename interpreted as an option to recursively
delete subdirectories.
<P>
One way of coping with this is to allow the user to type a special
command line string that causes option recognition to terminate.  For
example, a user could type:
<P>
<PRE>
rm -i -- -r
</PRE>
to interactively (<CODE>-i</CODE>) delete a file called <CODE>-r</CODE>.
<P>
The termination facility of CLP lets you specify which string (or
strings) should cause this behaviour.  A specification line of the form:
<A NAME="IDX40"></A>
<P>
<PRE>
<SAMP>`terminator'</SAMP> <VAR>string</VAR> <SAMP>`;'</SAMP>
</PRE>
declares <VAR>string</VAR> to be such a string.  Multiple terminator
specifications are allowed.
<P>
To get the behaviour described above for <CODE>rm</CODE> the following would
be used:
<P>
<PRE>
terminator "--";
</PRE>
<P>
<H2><A NAME="SEC12" HREF="clp_toc.html#SEC12">Parameters given by their command line position</A></H2>
<P>
Parameters that are interpreted according to their position on the
command line are called <VAR>positional parameters</VAR>.
<A NAME="IDX41"></A>
For example, when invoking a remote login program the remote machine
name may be given as a positional parameter.
<P>
A specification line of the form:
<A NAME="IDX42"></A>
<P>
<PRE>
<VAR>name</VAR> <SAMP>`positional'</SAMP> <SAMP>`;'</SAMP>
</PRE>
describes a situation where a positional parameter is to be
recognized and called <VAR>name</VAR>.
<P>
The plural form:
<A NAME="IDX43"></A>
<P>
<PRE>
<VAR>name</VAR> <SAMP>`positionals'</SAMP> <SAMP>`;'</SAMP>
</PRE>
can be used if a group of positional parameters is to be handled and
grouped together.
<P>
Multiple positional parameters can be recognized by giving multiple
specification lines of these kinds.  Parameters will be recognized in
the order that they are specified.  If a plural form is present, it should
be the last positional parameter specification line because it will represent
all of the positional parameters from that point on.
<A NAME="IDX44"></A>
In that case, the processor generated will accept varying numbers of
parameters.  If no plural form is given, the processor will accept a
fixed number of parameters equal to the number of singular positional
parameter specification lines.
<P>
<H2><A NAME="SEC13" HREF="clp_toc.html#SEC13">Input parameters</A></H2>
<A NAME="IDX45"></A>
<P>
An input parameter is a special kind of positional parameter for use when
the file named by the parameter value should be initialised for input by
the rest of the program.
For example, Eli-generated processors usually take a single input file
name as a positional parameter.
<P>
A specification line of the form:
<A NAME="IDX46"></A>
<P>
<PRE>
<VAR>name</VAR> <SAMP>`input'</SAMP> <SAMP>`;'</SAMP>
</PRE>
describes a situation where a positional parameter is to be recognized,
called <VAR>name</VAR> and used as an input file by the program.
<P>
Currently, only one input parameter may be specified.
Also, if an input parameter is specified but the user does not specify
a value for it, standard input is used.
Future versions will probably allow this behaviour to be customized.
For the time-being positional parameters can be used with custom opening
of input files.
<A NAME="IDX47"></A>
<P>
If no input parameter is specified then the processor will not be able
to get input from a file (unless otherwise programmed using positional
parameters).  Its main input stream will come from standard input.
<P>
<H2><A NAME="SEC14" HREF="clp_toc.html#SEC14">Documentation options and parameters</A></H2>
<A NAME="IDX48"></A>
<A NAME="IDX49"></A>
<P>
If the user specifies things incorrectly on the command line the usual
practice is to produce a usage message and terminate execution of the
processor.  CLP will automatically produce a usage message in this
fashion.  It is possible to attach descriptions to the option and
parameter specification lines to make this usage message more helpful to
the user.
<P>
Each of the types of specification lines described above (except those
for termination of option processing) can have a documentation string.
Typical examples are:
<P>
<PRE>
CompileOnly "-c" boolean "Just compile, don't link";
MacroPackage "-m" joinedto strings "Load this macro package";
FileName input "File to be processed";
Others positionals "Other positional parameters";
</PRE>
<P>
<HR size=1 noshade width=600 align=left>
<P>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="clp_2.html"><IMG SRC="gifs/prev.gif" ALT="Previous Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="clp_4.html"><IMG SRC="gifs/next.gif" ALT="Next Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="clp_toc.html"><IMG SRC="gifs/up.gif" ALT="Table of Contents" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT="">
<HR size=1 noshade width=600 align=left>
</TD>
</TR>
</TABLE>

</BODY></HTML>
